#pragma once
namespace aaaa
{
	enum Color
	{
		RED, BLACK,
	};

	template<class K, class V>
	struct RBTreeNode
	{
		RBTreeNode<K, V>* _left;
		RBTreeNode<K, V>* _right;
		RBTreeNode<K, V>* _parent;
		pair<K, V> _kv;
		Color _col;
		RBTreeNode(const pair<K,V>& kv)
			:_left(nullptr),_right(nullptr)
			,_parent(nullptr),_kv(kv),_col(RED)
		{}
	};

	template<class K,class V>
	class RBTree
	{
		typedef RBTreeNode<K, V> Node;
	public:
		bool IsBalance()
		{
			if (_root && _root->_col == RED)
			{
				cout << "find RED" << endl;
				return false;
			}
			int benchmark = 0;
			Node* cur = _root;
			while (cur)
			{
				if (cur->_col == BLACK)
					benchmark++;
				cur = cur->_left;
			}
			return _C
		}
	private:
		bool _Check(Node* root, int blackNum, int benchmark)
		{
			if (root == nullptr)
			{
				if (benchmark != blackNum)
				{
					cour << "not same BlackNum" << endl;
					return false;
				}
				return true;
			}
			if (root->_col == BLACK)
				blackNum++;
			if()
		}
	private:
		Node* _root = nullptr;
	};
}
namespace test1
{
	template<class k,>
}